home *** CD-ROM | disk | FTP | other *** search
- /*==============================================================================
-
- FICHERO: CIMB.C
-
- AUTOR: ANTONIO LADESA JURADO
-
- FECHA: 24/6/94
-
- DESCRIPCION:
-
- Fichero principal del programa. Contiene la función main().
-
- ==============================================================================*/
-
-
- /*---- MODULOS USADOS --------------------------------------------------------*/
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #include "global.h"
- #include "memoria.h"
- #include "raton.h"
- #include "pcx.h"
- #include "mac.h"
- #include "img.h"
- #include "gif.h"
- #include "tga.h"
- #include "tiff.h"
- #include "bmp.h"
- #include "pscript.h"
- #include "epson.h"
- #include "escala.h"
- #include "color.h"
- #include "video.h"
- #include "menu.h"
- #include "teclas.h"
- #include "error.h"
-
- /*---- ESTRUCTURAS, CONSTANTES Y VARIABLES LOCALES AL MODULO -----------------*/
-
- /* dimensiones de la pantalla */
- /*static int ancho,alto;*/
-
- /* puntero a la imagen */
- IMAGEN *c = NULL;
-
- /* accion a realizar sobre la imagen */
- extern struct ACCION accion;
-
- /* menu para informar sobre una imagen */
- extern int MENUInformar(IMAGEN *c);
-
- /*---- FUNCION main() --------------------------------------------------------*/
-
- /*---- void main(void) ---------------------------------------------------------
-
- Descripción:
-
- Inicializa el programa y llama a las funciones de tratamiento de las
- imágenes despues de recibir las opciones de los distintos menus
-
- ---- CODIGO: -----------------------------------------------------------------*/
-
- void main(void)
- {
- /* mensaje de uso general */
- char mensaje[128];
-
- /* opción */
- int opc=0;
-
- /* inicializar video */
- if(!VIDEOiniciar())
- {
- printf("\nError: VGA requerida");
- exit(1);
- }
-
- /* inicializar menu principal */
- if(!MENUinicio())
- {
- VIDEOcerrar();
- printf("\nRatón no instalado\n");
- exit(1);
- };
-
- /* poner el menu */
- MENUponer();
- RATONvisible();
-
- do
- {
- /* leer opción del menu principal */
- opc = MENUopcion(&accion);
- switch(opc)
- {
- /* leer imagen */
- case OPCargar:
- RATONoculto();
- if(c!=NULL)
- c = MEMliberar(c);
- sprintf(mensaje,"Cargando %s",accion.fichero);
- ESTADOponer(mensaje);
- switch(accion.tipo)
- {
- case PCX: c = PCXcargar(accion.fichero,c); break;
- case MACPAINT: c = MACcargar(accion.fichero,c); break;
- case GIF: c = GIFcargar(accion.fichero,c); break;
- case TIFF:c = TIFFcargar(accion.fichero,c); break;
- case IMG: c = IMGcargar(accion.fichero,c); break;
- case TGA: c = TGAcargar(accion.fichero,c); break;
- case BMP: c = BMPcargar(accion.fichero,c); break;
- case OTRO:
- default:break;
- };
- /* ver imagen */
- if(c!=NULL)
- {
- VIDEOver(c);
- MENUponer();
- }
- else
- ERRORver();
- break;
-
- /* ver imagen */
- case OPVer:
- RATONoculto();
- if(VIDEOver(c))
- MENUponer();
- else
- ERRORver();
- break;
-
- /* salvar imagen */
- case OPSalvar:
- if(c!=NULL)
- {
- if(MENUconfirmar("SALVAR FICHERO","Salvar",accion.fichero))
- {
- int r;
-
- RATONoculto();
- sprintf(mensaje,"Salvando %s",accion.fichero);
- ESTADOponer(mensaje);
- switch(accion.tipo)
- {
- case PCX: r=PCXsalvar(accion.fichero,c);break;
- case MACPAINT: r=MACsalvar(accion.fichero,c);break;
- case GIF: r=GIFsalvar(accion.fichero,c);break;
- case TIFF:r=TIFFsalvar(accion.fichero,c);break;
- case IMG: r=IMGsalvar(accion.fichero,c);break;
- case TGA: r=TGAsalvar(accion.fichero,c);break;
- case BMP: r=BMPsalvar(accion.fichero,c);break;
- case OTRO:
- default:break;
- }
- if(!r)
- ERRORver();
- else
- ESTADOquitar();
- }
- }
- else
- {
- ERRORponer(ERRnoImagen);ERRORver();
- }
- break;
-
- /* Eliminar imagen de la memoria */
- case OPNuevo:
- if(MENUconfirmar("ABANDONAR IMAGEN",accion.fichero,""))
- c = MEMliberar(c);
- break;
-
- /* reflejar horizontalmente la imagen */
- case OPReflejoH:
- RATONoculto();
- if(c!=NULL)
- {
- sprintf(mensaje,"Reflejando horizontalmente %s",c->nombre);
- ESTADOponer(mensaje);
- c = VIDEOinvertirHorizontal(c);
- VIDEOver(c);
- MENUponer();
- }
- else
- {
- ERRORponer(ERRnoImagen);ERRORver();
- }
- break;
-
- /* reflejar verticalmente la imagen */
- case OPReflejoV:
- RATONoculto();
- if(c!=NULL)
- {
- sprintf(mensaje,"Reflejando verticalmente %s",c->nombre);
- ESTADOponer(mensaje);
- c = VIDEOinvertirVertical(c);
- VIDEOver(c);
- MENUponer();
- }
- else
- {
- ERRORponer(ERRnoImagen);ERRORver();
- }
- break;
-
- /* convertir a blanco y negro. Dithering */
- case OPByN:
- if(c!=NULL)
- {
- if(c->modo != VIDEOmono)
- {
- opc = MENUByNPoner();
- if(opc>=0)
- {
- RATONoculto();
- sprintf(mensaje,"Convirtiendo a blanco y negro %s",c->nombre);
- ESTADOponer(mensaje);
- if(c->modo == VIDEOega)
- c= VIDEOvision(c);
- c = BlancoYNegro(c,opc-OPBayer);
- VIDEOver(c);
- MENUponer();
- }
- }
- else
- {
- RATONoculto();
- ERRORponer(ERRmonocromo);ERRORver();
- }
- }
- else
- {
- ERRORponer(ERRnoImagen);ERRORver();
- }
- break;
-
- /* Obtener negativo de la imagen */
- case OPVideoInverso:
- RATONoculto();
- if(c!=NULL)
- {
- sprintf(mensaje,"Invirtiendo blanco y negro de %s",c->nombre);
- ESTADOponer(mensaje);
- c = VideoInverso(c);
- VIDEOver(c);
- MENUponer();
- }
- else
- {
- ERRORponer(ERRnoImagen);ERRORver();
- }
- break;
-
- /* Convertir a tonos de gris */
- case OPGris:
- RATONoculto();
- if(c!=NULL)
- if(c->modo!=VIDEOmono)
- {
- sprintf(mensaje,"Convirtiendo a tonos de gris %s",c->nombre);
- ESTADOponer(mensaje);
- c = PonerGris(c);
- VIDEOver(c);
- MENUponer();
- }
- else
- {
- ERRORponer(ERRmonocromo);ERRORver();
- }
- else
- {
- ERRORponer(ERRnoImagen);ERRORver();
- }
- break;
-
- /* Escalar la paleta de colores */
- case OPColores:
- if(c!=NULL)
- {
- int colores = 256;
-
- opc = MENUcoloresPoner(&colores);
- if(opc == OPColores)
- {
- RATONoculto();
- if(c->modo != VIDEOvga)
- c = VIDEOvision(c);
- sprintf(mensaje,"Convirtiendo %s a %d colores",c->nombre,colores);
- ESTADOponer(mensaje);
- c = EscalarColores(c,colores);
- VIDEOver(c);
- MENUponer();
- }
- }
- else
- {
- RATONoculto();
- ERRORponer(ERRnoImagen);ERRORver();
- }
- break;
-
- /* Imprimir la imagen */
- case OPImprimir:
- if(c!=NULL)
- {
- int TipoImpresora = OPEpson;
- char fichero[128];
-
- strcpy(fichero,c->nombre);
- opc = MENUimprimirPoner(&TipoImpresora,fichero);
- if(opc == OPImpresion)
- {
- sprintf(mensaje,"Imprimiendo %s en %s",c->nombre,fichero);
- ESTADOponer(mensaje);
- switch(TipoImpresora)
- {
- case OPEpson: EPSONimprimir(c,fichero); break;
- case OPPostScript: POSTSCRIPTimprimir(c,fichero); break;
- }
- ERRORver();
- ESTADOquitar();
- }
- }
- else
- {
- RATONoculto();
- ERRORponer(ERRnoImagen);ERRORver();
- }
- break;
-
- /* Cambiar el modo de visualización */
- case OPVision:
- RATONoculto();
- if(c!=NULL)
- {
- c = VIDEOvision(c);
- VIDEOver(c);
- MENUponer();
- }
- else
- {
- ERRORponer(ERRnoImagen);ERRORver();
- }
- break;
-
- /* cambiar el tipo de memoria */
- case OPMemoria:
- c = MEMliberar(c);
- opc = MENUmemoriaPoner();
- if(opc >=0) MEMSeleccionar(opc);
- break;
-
- /* Escalar la imagen */
- case OPEscalar:
- if( c != NULL)
- {
- int factorx = 100,factory = 100;
-
- opc = MENUescalaPoner(&factorx,&factory);
- RATONoculto();
- if(opc == OPEscalado)
- {
- sprintf(mensaje,"Escalando %s",c->nombre);
- ESTADOponer(mensaje);
- c = IMAGENescalar(c,factorx,factory);
- ERRORver();
- VIDEOver(c);
- MENUponer();
- break;
- }
- }
- else
- {
- RATONoculto();
- ERRORponer(ERRnoImagen);ERRORver();
- }
- break;
-
- /* Dar información sobre la imagen */
- case OPInformar:
- if(c!=NULL)
- MENUInformar(c);
- else
- {
- RATONoculto();
- ERRORponer(ERRnoImagen);
- ERRORver();
- }
- break;
-
- /* Borrar o renombrar ficheros DOS */
- case OPBorrar:
- case OPRenombrar:
- MENUficheroDOS(accion.fichero,opc);
- break;
-
- /* salir del programa */
- case OPSalir:
- if(!MENUconfirmar("SALIR DE CIMB","",""))
- opc = NOOPC;
- break;
- default:
- break;
- };
- }
- while(opc !=OPSalir);
- VIDEOcerrar();
- printf("Gracias por usar CIMB.EXE, ALJ 1994\n");
- }
-
- /*---- FIN FUNCION -----------------------------------------------------------*/
-
-